/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package continuity;

import java.io.IOException;

/**
 *
 * @author FornetTeam
 */
public class KeyElement extends Element {
    /**       
    * Nyilvántartja, hogy felvették-e a kulcsot. Hamis, ha még nem vették fel.
    */  
    private boolean isGet; 
    /**       
    * A pályán lévő ajtó.
    */  
    private DoorElement door;
  
    
    /**
     * Keyelement konstruktora
     * @param game Az ősosztálynak átadjuk a game-t, hogy meghívhassuk majd a megfelelő függvényeit
     */
    public KeyElement(Communication game){
        super(game);
        this.canMove=true;
    }
 
    /**
     * Beállítja az ajtót
     * @param d Az ajtót reprezentáló objektum
     */
    public void setDoor(DoorElement d){
        this.door = d;
    }
    
    /**
     * A kulcs felvett állapotba vált, és értesíti az ajtót erről az eseményről
     * @throws IOException 
     */
    @Override 
    public void doSomething(){
        
        /**
         * Ha felvesszük a kulcsot, felvett állapotba állítjuk az isGet-et
         * és meghívjuk a megfelelő függvényt
         */
        if(this.isGet==false)
        {
             this.isGet=true;
             door.keyFound();
             
            /**
            * char number változóba bekerül a character sorszáma,
            * amely felvette a kulcsot.
            * Ekkor az adott karakternek az újjáéledési helyét átállítjuk
            * a felvett kulcs pozíciójának helyére.
            */
            int char_number;
            if(this.parent.getIsHere(1)==true)
                char_number=1;
            else
                char_number=0;
            this.game.setReloadPosition(this.parent, char_number);
            
        }
        
        
        /**
         * Megvizsgáljuk, hogy a kulcsot tartalmazó Node alatt milyen Node található.
         * Ha a pálya széle, akkor az adott karakter(ek) meghal(nak).
         */
        if(this.parent.getNeighbor(Direction.Down.toInt())==null)
        {
            if(this.parent.getIsHere(0)==true)
                this.game.reloadCharacter(0);
            if(this.parent.getIsHere(1)==true)
                this.game.reloadCharacter(1);
        }
     }  
    
    /**
     * 
     * @return Az értékül visszaadott String reprezentálja szövegesen,
     * hogy milyen fajta az aktuális elem.
     */
    @Override
    public String toString() {
        if(this.isGet==false)
            return "Ke";
        else
            return "Pu";
    }
}
